package map;

import java.security.Key;
import java.util.*;

/**
 * Map的遍历，支持三种遍历方式:
 * 1.遍历所有的key
 * 2.遍历所有的value--------------相对不常用
 * 3.遍历所有的Entry（键值对）
 */
public class MapDemo3 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("语文",99);
        map.put("数学",98);
        map.put("英语",88);
        map.put("物理",80);
        map.put("化学",99);
        System.out.println(map);  //{物理=80, 数学=98, 化学=99, 语文=99, 英语=88}

        /*
        遍历所有的key
         */
        Set<String> keySet = map.keySet();
        for(String key:keySet){
            System.out.println("key:"+key);
        }

        /*
        遍历所有的value
         */

        Collection<Integer> values = map.values();
        for(Integer value : values){
            System.out.println("value:"+values);
        }

        /*
        遍历所有的Entry（键值对）
         */

        Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
        for(Map.Entry<String,Integer> e: entrySet){  //e代表每一个键值对
            String key = e.getKey();  //获取key键
            Integer value = e.getValue();  //获取value值
            System.out.println("key:"+key+",value="+value);
        }


        /*
        JDK8之后,所有集合提供了forEach方法，基于lambda表达式遍历
         */
        System.out.println("-------------------------------");

        keySet.forEach(k-> System.out.println(k));
        values.forEach(v-> System.out.println(v));
        entrySet.forEach(e-> System.out.println(e.getKey()+","+e.getValue()));
        map.forEach((k,v)-> System.out.println(k+","+v));








    }
}
